1
Потоки как основа ввода-вывода в Ruby
AI035Lesson 6
00:00

В Ruby ввод-вывод — это не просто набор команд; это сложная архитектура на основе потоков. В центре этой системы находится класс IO класс, который выступает в качестве двунаправленного канала между вашей программой и внешним миром. Независимо от того, взаимодействуете ли вы с файлом, сетевым сокетом или терминалом пользователя, Ruby рассматривает их как универсальные потоки.

1. Двунаправленный мост

Объект IO является единым абстрактным представлением. Хотя операционная система видит раздельные дескрипторы файлов для чтения и записи (например, в канале), то Ruby объединяет их в один объект. Это позволяет обеспечить бесперебойный обмен данными в обоих направлениях.

Программа на языке RubyРесурсОбъект IO

2. Ядро и стандартные фильтры

Модуль Kernel предоставляет методы, такие как gets и print. Эти методы по сути являются фильтрами которые делегируют работу глобальным константам STDIN и STDOUT. Это означает, что ваш код можно перенаправить на уровне ОС для обработки файлов или сетевых потоков, не меняя ни одной строки логики.

$$\text{Поток} \rightarrow \text{Буфер} \rightarrow \text{Интерпретатор Ruby}$$

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>